home *** CD-ROM | disk | FTP | other *** search
- #ifndef XADMASTER_XADCONVNAME_C
- #define XADMASTER_XADCONVNAME_C
-
- /* Programmheader
-
- Name: xadConvName.c
- Main: xadmaster
- Versionstring: $VER: xadConvName.c 1.0 (24.09.2000)
- Author: SDI
- Distribution: Freeware
- Description: name extension conversion function
-
- 1.0 24.09.00 : first version
- */
-
- #define SDI_TO_ANSI
- #include "SDI_ASM_STD_protos.h"
- #include <stdarg.h>
-
- /*
- Arguments are extension in form
- old, new, old, new, old, new, 0
- If there is no new extension, 0 may be specified.
- Extensions should be lower case.
- Example:
- nsize = xadConvName(buf, 256, ai->xai_InName, ".gz", 0, ".tgz", ".tar", ".adz", ".adf", 0);
- */
-
- static ULONG xadConvName(STRPTR buf, ULONG bufsize, STRPTR name, ...)
- {
- va_list v;
- ULONG i, j = 0, k, up = 0;
- STRPTR ext;
-
- va_start(v, name);
- i = strlen(name);
- while((ext = va_arg(v, char *)))
- {
- j = strlen(ext);
- if(j < i && !stricmp(name+i-j, ext))
- break;
- va_arg(v, char *);
- j = 0;
- }
- for(k = j; k && (name[i-k] > 'z' || name[i-k] < 'a'); --k)
- ;
- if(!k)
- up = 1;
- for(k = 0; k < i-j && k < bufsize-1; ++k)
- buf[k] = name[k];
- if(ext && (ext = va_arg(v, char *)))
- {
- for(; *ext && k < bufsize-1; ++k)
- {
- buf[k] = up ? toupper(*ext) : tolower(*ext);
- ++ext;
- }
- }
- va_end(v);
- buf[k] = 0;
- return k;
- }
-
- #endif /* XADMASTER_XADCONVNAME_C */
-